package compiler;

public class Token
{
	private String nombre = null;
	private String tipo = null;
	private String valor = null;
	private Integer longitud = null;
	
	public String getNombre()
	{
		return nombre;
	}
	
	public String getTipo()
	{
		return tipo;
	}
	
	public void setNombre(String nombre)
	{
		this.nombre = nombre;
	}
	
	public void setTipo(String tipo)
	{
		this.tipo = tipo;
	}
	
	public String getValor()
	{
		return valor;
	}
	
	public void setValor(String valor)
	{
		this.valor = valor;
	}
	
	public Integer getLongitud()
	{
		return longitud;
	}
	
	public void setLongitud(Integer longitud)
	{
		this.longitud = longitud;
	}
	
	@Override
	public boolean equals(Object obj)
	{
		if(this == obj)
			return true;
		if(obj == null)
			return false;
		if(getClass() != obj.getClass())
			return false;
		if(!(obj instanceof Token))
			return false;
		
		final Token t = (Token) obj;
		if(nombre != null && t.nombre == null)
			return false;
		if(nombre == null && t.nombre != null)
			return false;
		if(nombre != null && t.nombre != null && nombre.compareTo(t.nombre) != 0)
			return false;		
		if(tipo != null && t.tipo != null && tipo.compareTo(t.tipo) != 0)
			return false;
		
		return true;
	}
	
	public void mostrar() {
		System.out.println("Nombre: " + this.nombre);
		System.out.println("Tipo: " + this.tipo);
		System.out.println("Valor: " + this.valor);
		System.out.println("Longitud: " + this.longitud);
	}
}
